A network switch is a hardware device for making data connections among devices. Switches may be employed to receive, process and forward data packets to their intended destination according to specific flow management protocols (or data forwarding protocols). Moreover, network switches can have two planes: a control plane and a data plane. The control plane is a portion of the system responsible for providing the flow management protocol functions and features of the system. The data plane is responsible for actually receiving, processing and sending data from and to the ports that connect the switch to external sources according to the logic provided by the control plane.
Network switches may be deployed as physical hardware or may be virtually deployed using software that provides network connectivity for systems employing virtualization technologies. Virtualization technologies allow one computer to do the job of multiple computers by sharing resources of a single computer across multiple systems. Through the use of such technology, multiple operating systems and applications can run on the same computer at the same time, thereby increasing utilization and flexibility of hardware. Virtualization allows servers to be decoupled from underlying hardware, thus resulting in multiple VMs sharing the same physical server hardware.
When any of the multiple virtual computer systems communicate one with another, they can communicate within the single physical computing device via the virtual switch. In other words, network traffic with a source and destination within the single physical computing device do not exit the physical computer system.
With network virtualization technology being widely adopted, virtual switch functionalities, protocols, hardware accelerators, etc. are emerging quickly. Under many circumstances, different virtual switch implementations with different protocols from different vendors may be used in a single system, which makes switch configuration tasks complicated or even impossible.